package cn.kjcoder.redis.task;

import cn.kjcoder.redis.config.Constants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.util.Random;

/**
 * @author hkj
 * @email 1349091387@qq.com
 * @date 2022/1/23
 * 源码允许修改，并且本人十分乐意有 大佬 来对代码进行 随 意 调 教
 **/
@Service
@Slf4j
public class InitService {

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 初始化一个月的历史数据
     */
    @PostConstruct
    public void init30day(){
        log.info("初始化");
        //计算出单前时间的小时key
        long hour = System.currentTimeMillis() / (1000 * 60 * 60);
        for (int i = 1; i < 24 * 30; i++) {
            //计算前30天的小时key
            String key = Constants.HOUR_KEY + (hour - i);
            this.initMember(key);
            System.out.println(key);
        }
    }

    /**
     * 初始化每个小时的key
     * @param key
     */
    public void initMember(String key) {
        Random random = new Random();
        //模拟对26个英文字母实现排行
        for (int i = 1; i <= 26; i++) {
            this.redisTemplate.opsForZSet().add(key,String.valueOf((char)96+i), random.nextInt(10));
        }
    }
}
